package com.zmn.oms.model.vo.order.proxy;

import com.zmn.oms.model.entity.remark.OrderRemarkDetail;
import com.zmn.oms.model.vo.product.OrderProductVO;
import lombok.Data;

import java.io.Serializable;
import java.util.Date;
import java.util.List;

/**
 * 类描述：订单详情
 *
 * @author liuying
 * @date 2019/02/18 15:17
 */
@Data
public class OrderInfoVO implements Serializable {

    /**
     * 订单ID
     */
    private Long orderId;

    /**
     * 外部订单ID
     */
    private String outerId;

    /**
     * 渠道ID
     */
    private Integer channelId;

    /**
     * 服务分类
     */
    private Integer servCategId;

    /**
     * 服务分类名称
     */
    private String servCategName;

    /**
     * 产品信息
     */
    private String productInfo;

    /**
     * 产品
     */
    private List<OrderProductVO> productList;

    /**
     * 状态
     */
    private Integer status;

    /**
     * 状态
     */
    private String statusName;

    /**
     * 结果
     */
    private Integer resultStatus;

    /**
     * 结果
     */
    private String resultStatusName;

    /**
     * 接单时间
     */
    private Date receiveTime;

    /**
     * 确认时间
     */
    private Date confirmTime;

    /**
     * 派单时间
     */
    private Date distributeTime;

    /**
     * 工程师接单时间
     */
    private Date takeTime;

    /**
     * 联系用户时间
     */
    private Date contactTime;

    /**
     * 工程师上门时间
     */
    private Date visitTime;

    /**
     * 产生结果的操作员类型
     */
    private Integer resulterType;

    /**
     * 产生结果的时间
     */
    private Date resultTime;

    /**
     * 城市ID
     */
    private Integer cityId;

    /**
     * 客户电话1
     */
    private String telephone;

    /**
     * 联系人
     */
    private String contactName;

    /**
     * 性别：1 男; 2 女; 3 保密
     */
    private Integer gender;

    /**
     * 用户地址
     */
    private String address;

    /**
     * 街道
     */
    private String street;

    /**
     * 经度
     */
    private Double longitude;

    /**
     * 纬度
     */
    private Double latitude;

    /**
     * 预约时间
     */
    private Date dutyTime;

    /**
     * 是否禁止弃单 1：否，可以弃单  2：不允许弃单
     */
    private Integer disableDiscard;

    /**
     * 是否固定价格 1：否，可以改价  2：不允许改价
     */
    private Integer fixPrice;

    /**
     * 工程师姓名
     */
    private String masterName;
    /**
     * 小号1
     */
    private String masterBindTelephone;

    /**
     * 订单金额
     */
    private Integer originalAmount;

    /**
     * 应收总额
     */
    private Integer totalAmount;

    /**
     * 优惠总金额
     */
    private Integer discountAmount;

    /**
     * 支付状态
     */
    private Integer payStatus;

    /**
     * 支付时间
     */
    private Date payTime;

    /**
     * 定金
     */
    private Integer depositAmount;

    /**
     * 定金支付状态：1未支付，2已支付，3退款
     */
    private Integer depositStatus;

    /**
     * 定金支付时间
     */
    private Date depositTime;

    /**
     * 预付款
     */
    private Integer prepayAmount;

    /**
     * 预付款支付状态：1未支付，2已支付，3退款
     */
    private Integer prepayStatus;

    /**
     * 渠道预付款
     */
    private Integer channelPrepayAmount;

    /**
     * 渠道预付款支付状态：1未支付，2已支付，3退款
     */
    private Integer channelPrepayStatus;

    /**
     * 预付款支付时间
     */
    private Date prepayTime;

    /**
     * 工程师收款金额
     */
    private Integer masterAmount;

    /**
     * 工程师支付状态：1.未支付 2.支付中 3.部分支付 4.已支付 12.退款中 13.部分退款 14.已退款
     */
    private Integer masterPayStatus;

    /**
     * 渠道费
     */
    private Integer channelAmount;

    /**
     * 退款金额
     */
    private Integer refundAmount;

    /**
     * 维修完成时间
     */
    private Date completeTime;

    /**
     * 维修完成时间
     */
    private Date updateTime;

    /**
     * 扩展数据
     */
    private String outerData;

    /**
     * 扩展数据，仅供内部定义使用，用于协助完成同步等业务逻辑，格式根据业务需要自由定义
     */
    private String extOuterData;

    /**
     * 渠道扩展数据，渠道自定义数据，订单同步完成时会原样返回给对方
     */
    private String extraData;

    /**
     * 订单取消原因（订单状态为失败时才会有数据）
     */
    private List<OrderRemarkDetail> cancelRemarkList;
}
